// 对象类型
let obj: object //object代表了普通对象,数组和函数
let obj1: Object // Object表示所有类型的基类.也表示了js中Object全局对象的类型

// 普通对象
// 这是描述一个对象类型的写法.但是太难看
let obj2: {
  name: string
  age: number
} = {
  name: 'zs',
  age: 19,
}

// 我们应该使用接口,让代码的可读性变高(接口可以简单理解为把描述对象的性能单独抽取出来的一种写法)
interface Iobj {
  name: string // name必须写,值必须是string
  age: number // age必须写,值必须是number. 也不能写其他属性
  sex?: boolean // sex是可选属性,值是boolean类型
  [xxx: string]: string | number | boolean // 任意属性.属性名不确定,值的类型可能确定也可能不确定
  // 注意: 任意属性的值的类型必须包含其他属性的值的类型
  readonly id: string // 只读属性. 只能获取,不能修改
}
let obj3: Iobj = {
  id: '234234234243',
  name: 'zs',
  age: 19,
  sex: false,
  hahaha: 123,
  hehe: 123,
  yyy: 123,
  zzz: 123,
}

obj3.id

obj3.id = '000000'
